/*
*  Copyright 2019-2020 Zheng Jie
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*  http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
package me.zhengjie.business.service;

import me.zhengjie.business.domain.Jzdj;
import me.zhengjie.business.domain.vo.FyxxVo;
import me.zhengjie.business.domain.vo.JzdjResultVo;
import me.zhengjie.business.domain.vo.KB03;
import me.zhengjie.business.domain.vo.PersonFeeVo;
import me.zhengjie.business.service.dto.JzdjDto;
import me.zhengjie.business.service.dto.JzdjQueryCriteria;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.List;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;

/**
* @website https://el-admin.vip
* @description 服务接口
* @author xiahongbo
* @date 2022-06-06
**/
public interface JzdjService {

    /**
     * 查询数据分页
     *
     * @param criteria 条件
     * @param pageable 分页参数
     * @return Map<String, Object>
     */
    Map<String, Object> queryAll(JzdjQueryCriteria criteria, Pageable pageable);

    /**
     * 查询所有数据不分页
     *
     * @param criteria 条件参数
     * @return List<JzdjDto>
     */
    List<JzdjDto> queryAll(JzdjQueryCriteria criteria);

    /**
     * 查询在院人员，即已经就诊登记的人员
     *
     * @param yljgdm
     * @param sfz      条件参数
     * @param pageable 条件参数
     * @return List<JzdjDto>
     */
    Map<String, Object> queryZyry(String yljgdm, String sfz, Pageable pageable);

    /**
     * 根据身份证查询入院的人员
     *
     * @param sfz ID
     * @return JzdjDto
     */
    JzdjDto findJzjl(String sfz);

    /**
     * 查询本地费用信息
     *
     * @param jzid
     * @return FyxxVo
     */
    FyxxVo queryLocalFyxx(Long jzid);

    /**
     * 根据ID查询
     *
     * @param bisJzdjId ID
     * @return JzdjDto
     */
    JzdjDto findById(Long bisJzdjId);

    /**
     * 创建
     *
     * @param resources /
     * @return JzdjDto
     */
    JzdjDto create(Jzdj resources);

    void makeJzdj84(Long jzid, String cyrq, String ywbm);

    String makeFymx84(Long jzid);

    String deleteFymx(Long jzid);

    String makeFymx84Single(Long fyid, String ywbm);

    String makeFyjs84(Long jzid, String ywbm);

    void saveFyjs84(String msg, String cyrq, Long jzid);

    void saveQftf84(String jsxxId);

    /**
     * 编辑
     *
     * @param resources /
     */
    void update(Jzdj resources);

    /**
     * 多选删除
     *
     * @param ids /
     */
    void deleteAll(Long[] ids);

    /**
     * 导出数据
     *
     * @param all      待导出的数据
     * @param response /
     * @throws IOException /
     */
    void download(List<JzdjDto> all, HttpServletResponse response) throws IOException;

    List<PersonFeeVo> queryPersonFee(String ryxx, String djrq, String cblx);

    Map<String,Object> queryJzdjResultVo(String kfrq, String jgbm, String ksmc, String sndj, String ryxx);

    void makeFymxPl(String ids, String ryxx, String sndj, String kfrq, String jgbm, String masterId, Long userId);

    void makeYjsPl(String ids, String ryxx, String sndj, String jgbm, Long userId);
}